package com.example.ad.sdk.domain.view.mvi

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner

/**
 * 基础渲染器类，用于在生命周期事件触发时执行清理操作
 * 此类通过实现LifecycleEventObserver接口，监听并响应生命周期事件
 *
 * @param disposeEvent 生命周期事件，当该事件触发时，将调用clear方法进行清理默认为Lifecycle.Event.ON_DESTROY
 */
abstract class BaseRenderer(
    private val disposeEvent: Lifecycle.Event = Lifecycle.Event.ON_DESTROY
) : LifecycleEventObserver {

    /**
     * 当监听的生命周期状态改变时调用此方法
     *
     * @param source 发生状态改变的LifecycleOwner对象
     * @param event 当前的生命周期事件
     */
    override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
        if (event == disposeEvent) clear()
    }

    /**
     * 清理资源或执行必要的清理操作
     * 此方法应在子类中实现，以完成具体的清理逻辑
     */
    abstract fun clear()
}